package main

// by daoyi
import (
	"fmt"
	"github.com/gin-gonic/gin"
	swaggerFiles "github.com/swaggo/files"
	ginSwagger "github.com/swaggo/gin-swagger"
	"html/template"
	"log"
	"simai_oa/docs"
	"simai_oa/router"
	"simai_oa/tool"
)

func Println(str1 string, str2 string) string {
	fmt.Println(str1, str2)
	return str1 + "---------" + str2
}

func main() {

	//引入本人写的Log日志功能
	tool.InitLog()

	//引入数据库配置database
	tool.InitDatabase()
	log.Println("引入database配置...")

	//更新表字段或新建表 需要更新或创建时开启
	//tool.Gdb.AutoMigrate(&model.UserBasic{}, &model.Admin{}, &model.Message{}, &model.Contact{}, &model.GroupBasic{}, &model.Users{})
	//
	//tool.Gdb.AutoMigrate(&model.AdminLogs{}, &model.Goods{}, &model.Logistics{}, &model.LogisticsCompany{}, &model.OrderList{}, &model.Order{}, &model.Menu{}, &model.Role{}, &model.RoleMenu{})
	//tool.Gdb.AutoMigrate(&model.Category{}, &model.File{})

	//引入配置文件config
	Cfg := tool.Cfg
	log.Println("引入配置文件config...")
	//引入gin框架
	r := gin.Default()
	//r.LoadHTMLFiles()

	//自定义模板函数 注意要办这个函数放在加载模板前
	r.SetFuncMap(template.FuncMap{
		"UnixToTime": tool.UnixToTime,
		"prt":        Println,
	})

	//引入redis配置Redis
	tool.InitRedis()
	log.Println("引入redis配置...")
	//配置sessions中间件
	//创建基于cookie的存储引擎，secret123 参数是用于加密的密钥
	//store := cookie.NewStore([]byte("secret123"))
	//创建基于redis的存储引擎
	//store, _ := redis.NewStore(10, "tcp", Cfg.Redis.Local+":"+Cfg.Redis.Port, Cfg.Redis.Pwd, []byte("secret"))
	//store 是前面创建的存储引擎，我们可以替换成其他的存储引擎
	//r.Use(sessions.Sessions("mysession", store))

	//加载模板放在配置路由上面
	r.LoadHTMLGlob("view/**/*")

	//配置加载静态文件目录
	r.Static("/static", "./static")

	//引入swaggo
	docs.SwaggerInfo.BasePath = ""
	r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
	router.AdminRoutesInit(r)
	router.ApiRoutesInit(r)

	//创建数据库

	//从config配置文件中读取host地址和port端口
	r.Run(Cfg.AppHost + ":" + Cfg.AppPort)
}
